//package cn.east196.tfx.ui;
//
//import cn.east196.tcore.FreemakerGenerator;
//import cn.east196.tfx.db.Schema;
//import cn.east196.tfx.db.TableField;
//import cn.east196.tfx.util.NameUtil;
//import cn.east196.xfx.Table;
//import freemarker.template.TemplateException;
//
//import java.io.File;
//import java.io.IOException;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//public class GenerateService {
//
//    public void processEntity(Table table) {
//        String outDir = getSourceDir() + mkPackageDirs(entityPackageField.getText().trim());
//        File file = new File(outDir);
//        if (!file.exists()) {
//            file.mkdirs();
//        }
//        String tableName = table.getTableName();
//        List<TableField> tableFields = new ArrayList<>();
//        tableFields = getTableFields(currentSchemaName, tableName);
//        Map data = new HashMap();
//        String destFile = outDir + table.getMappingName() + ".java";
//        data.put("entityPackage", entityPackageField.getText());
//        data.put("author", authorField.getText());
//        data.put("date", datePicker.getValue());
//        data.put("className", table.getMappingName());
//        data.put("tableName", tableName);
//        data.put("schemaName", currentSchemaName);
//        data.put("jpaSupport", jpaSupportCheckBox.isSelected());
//        data.put("fields", tableFields);
//        try {
//            FreemakerGenerator entityGenerator = new FreemakerGenerator("Entity.ftl",destFile);
//            entityGenerator.setData(data);
//            entityGenerator.process();
//        } catch (IOException | TemplateException e) {
//            logger.error(e);
//        }
//    }
//
//
//
//    public void processDao(Table table) {
//        String outDir = getSourceDir() + mkPackageDirs(daoPackageField.getText().trim());
//        File file = new File(outDir);
//        if (!file.exists()) {
//            file.mkdirs();
//        }
//        Map data = new HashMap();
//        data.put("className", table.getMappingName());
//        data.put("daoPackage", daoPackageField.getText().trim());
//        data.put("entityPackage", entityPackageField.getText().trim());
//        data.put("author", authorField.getText());
//        data.put("date", datePicker.getValue());
//        try {
//            FreemakerGenerator daoGenerator = new FreemakerGenerator("Dao.ftl",outDir + table.getMappingName() + "Dao.java");
//            FreemakerGenerator daoImplGenerator = new FreemakerGenerator("DaoImpl.ftl",outDir + table.getMappingName() + "DaoImpl.java");
//            daoGenerator.setData(data);
//            daoImplGenerator.setData(data);
//            daoGenerator.process();
//            daoImplGenerator.process();
//        } catch (IOException | TemplateException e) {
//            logger.error(e);
//        }
//    }
//
//    public void processService(Table table) {
//        String outDir = getSourceDir() + mkPackageDirs(servicePackageField.getText().trim());
//        File file = new File(outDir);
//        if (!file.exists()) {
//            file.mkdirs();
//        }
//        Map data = new HashMap();
//        data.put("className", table.getMappingName());
//        data.put("servicePackage", servicePackageField.getText().trim());
//        data.put("daoPackage", daoPackageField.getText().trim());
//        data.put("entityPackage", entityPackageField.getText().trim());
//        data.put("classFieldName", NameUtil.asFieldName(table.getMappingName()));
//        data.put("author", authorField.getText());
//        data.put("date", datePicker.getValue());
//        try {
//            FreemakerGenerator serviceGenerator = new FreemakerGenerator("Service.ftl",outDir + table.getMappingName() + "Service.java");
//            FreemakerGenerator serviceImplGenerator = new FreemakerGenerator("ServiceImpl.ftl",outDir + table.getMappingName() + "ServiceImpl.java");
//            serviceGenerator.setData(data);
//            serviceImplGenerator.setData(data);
//            serviceGenerator.process();
//            serviceImplGenerator.process();
//        } catch (IOException | TemplateException e) {
//            logger.error(e);
//        }
//    }
//
//    public void processController(Table table) {
//        String outDir = getSourceDir() + mkPackageDirs(controllerPackageField.getText().trim());
//        File file = new File(outDir);
//        if (!file.exists()) {
//            file.mkdirs();
//        }
//        Map data = new HashMap();
//        data.put("className", table.getMappingName());
//        data.put("controllerPackage", controllerPackageField.getText().trim());
//        data.put("servicePackage", servicePackageField.getText().trim());
//        data.put("entityPackage", entityPackageField.getText().trim());
//        data.put("classFieldName", NameUtil.asFieldName(table.getTableName()));
//        data.put("author", authorField.getText());
//        data.put("date", datePicker.getValue());
//        try {
//            FreemakerGenerator controllerGenerator = new FreemakerGenerator("Controller.ftl",outDir + table.getMappingName() + "Controller.java");
//            controllerGenerator.setData(data);
//            controllerGenerator.process();
//        } catch (IOException | TemplateException e) {
//            logger.error(e);
//        }
//    }
//
//    public void processConfig() { // 配置生成
//        String webConfigOutDir = getWebappDir();
//        String propertiesOutDir = getResourcesDir();
//        File configfile = new File(webConfigOutDir);
//        File propertiesfile = new File(propertiesOutDir);
//        if (!configfile.exists()) {
//            configfile.mkdirs();
//        }
//        if (!propertiesfile.exists()) {
//            propertiesfile.mkdirs();
//        }
//        Map data = new HashMap();
//        if (schema == Schema.MYSQL) {
//            jdbcProp.setUrl(jdbcProp.getUrl() + currentSchemaName);
//        }
//        data.put("jdbc", jdbcProp);
//        data.put("schema", schema.text);
//        data.put("schemaName", currentSchemaName);
//        data.put("basePackage", basePackageField.getText().trim());
//        try {
//            FreemakerGenerator applicationContextGenerator =
//                    new FreemakerGenerator("ApplicationContext.ftl",webConfigOutDir + "applicationContext.xml");
//            FreemakerGenerator dispatcherServletGenerator = new FreemakerGenerator("Dispatcher-Servlet.ftl",webConfigOutDir + "dispatcher-servlet.xml");
//            FreemakerGenerator mysqlPropertiesGenerator = new FreemakerGenerator("Db.properties.ftl",propertiesOutDir + "db.properties");
//            FreemakerGenerator webxmlGenerator = new FreemakerGenerator("Web.ftl",webConfigOutDir + "web.xml");
//            applicationContextGenerator.setData(data);
//            dispatcherServletGenerator.setData(data);
//            mysqlPropertiesGenerator.setData(data);
//            applicationContextGenerator.process();
//            dispatcherServletGenerator.process();
//            mysqlPropertiesGenerator.process();
//            webxmlGenerator.process();
//        } catch (IOException | TemplateException e) {
//            logger.error(e);
//        }
//    }
//
//    public void processPom() {
//        String outDir = outPutPathField.getText() + "\\";
//        String groupId = groupIdField.getText().trim();
//        String artifactId = artifactIdField.getText().trim();
//        Map data = new HashMap();
//        data.put("groupId", groupId);
//        data.put("schema", schema.text);
//        data.put("artifactId", artifactId);
//        data.put("springVersion", springVersionComboBox.getValue());
//        data.put("hibernateVersion", hibernateVersionComboBox.getValue());
//        try {
//            FreemakerGenerator pomGenerator = new FreemakerGenerator("Pom.ftl",outDir + "pom.xml");
//            pomGenerator.setData(data);
//            pomGenerator.process();
//        } catch (IOException | TemplateException e) {
//            logger.error(e);
//        }
//    }
//
//
//}
